home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs53.d81 / hddirsrt.prg (.txt) < prev    next >
Commodore BASIC  |  2009-10-10  |  3KB  |  103 lines

  1. 0 REM   ** HD DIR SORT
  2. 10 POKE53280,0:POKE53281,0:PRINT"[147]           HD DIRECTORY SORT"
  3. 12 PRINT"[154]              BY D. COTTON"
  4. 14 PRINT"[153]              (C) 1990 CMD"
  5. 20 DIMFE$(1000),T%(125),S%(125)
  6. 40 BF$=CHR$(255):FORI=1TO4:BF$=BF$+BF$:NEXT:FORI=1TO3:BF$=CHR$(0)+BF$:NEXT
  7. 50 FORI=1TO11:BF$=BF$+CHR$(0):NEXT
  8. 60 FORI=1TO30:ZF$=ZF$+CHR$(0):NEXT
  9. 100 REM ** SET UP
  10. 102 DV=PEEK(186)
  11. 104 INPUT"DEVICE NUMBER    ";DV:IFDV<8ORDV>29THEN104
  12. 105 OPEN15,DV,15:PRINT#15,"M-R";CHR$(164);CHR$(254);CHR$(2):GET#15,I1$,I2$
  13. 106 CLOSE15:ID$=I1$+I2$:IFID$<>"HD"THENPRINT"[147]NOT AN HD!":END
  14. 107 INPUT"PARTITION NUMBER ";PA
  15. 108 IFPA<0ORPA>254THEN107
  16. 110 OPEN15,DV,15:PRINT#15,"C[208]";CHR$(PA):PRINT#15,"G-P";CHR$(PA)
  17. 112 GET#15,PT$:PT$=PT$+CHR$(0):PT=ASC(PT$):CLOSE15
  18. 114 IFPT=1THENINPUT"PATH             ";PA$
  19. 116 IFPT=1THENIFPA$<>""THENIF(LEFT$(PA$,2)<>"//")OR(RIGHT$(PA$,1)<>"/")THEN114
  20. 118 IFPT=1THENIFPA$<>""THENOPEN15,DV,15:PRINT#15,"CD";PA$:CLOSE15
  21. 120 R1=R2:IFL1<R1THEN504
  22. 130 IFSKTHEN502
  23. 200 REM ** FIND STARTING T & S OF DIR
  24. 204 OPEN15,DV,15:OPEN2,DV,0,"$:*,P,R"
  25. 206 PRINT#15,"M-R";CHR$(0);CHR$(34);CHR$(2):GET#15,T$,S$
  26. 208 CLOSE2:CLOSE15
  27. 210 BT=ASC(T$+CHR$(0)):BS=ASC(S$+CHR$(0))
  28. 212 T=BT:S=BS:NF=0
  29. 300 REM ** READ DIR INTO ARRAY
  30. 301 PRINT"[147]READING DIRECTORY...":PRINT
  31. 302 BC=0
  32. 304 OPEN15,DV,15
  33. 306 OPEN2,DV,2,"#"
  34. 308 IFBC=125THENCLOSE2:CLOSE15:PRINT"[147]DIRECTORY TOO LARGE!":GOTO1100
  35. 309 NF=NF+8:PRINT#15,"U1:";2;0;T;S
  36. 310 PRINT#15,"B-P";2;0
  37. 311 FORI=0TO7
  38. 312 GET#2,NT$,NS$
  39. 314 IFI>0THEN318
  40. 316 T%(BC)=ASC(NT$+CHR$(0)):S%(BC)=ASC(NS$+CHR$(0))
  41. 318 FE$="":FORJ=1TO30:GET#2,EB$:EB=ASC(EB$+CHR$(0)):FE$=FE$+CHR$(EB):NEXT
  42. 319 FE$(BC*8+I)=FE$:IFASC(MID$(FE$,1,1)+CHR$(0))>0THENPRINTMID$(FE$,4,16)
  43. 320 NEXT
  44. 322 IF(T%(BC)*256+S%(BC)=255)THENCLOSE2:CLOSE15:GOTO500
  45. 324 T=T%(BC):S=S%(BC):BC=BC+1:GOTO308
  46. 500 REM ** ADJUST DEL FILES
  47. 502 FORI=0TONF-1
  48. 504 IFASC(MID$(FE$(I),1,1)+CHR$(0))=0THENFE$(I)=BF$
  49. 506 NEXT
  50. 600 REM ** SORT ENTRIES
  51. 602 PRINT"[147]SORTING...":PRINT
  52. 604 FORI=0TONF-2
  53. 606 FORJ=I+1TONF-1
  54. 608 IFMID$(FE$(J),4,16)<MID$(FE$(I),4,16)THENTS$=FE$(I):FE$(I)=FE$(J):FE$(J)=TS$
  55. 610 NEXT
  56. 612 IFASC(MID$(FE$(I),1,1)+CHR$(0))>0THENPRINTMID$(FE$(I),4,16)
  57. 614 NEXT
  58. 616 IFASC(MID$(FE$(NF-1),1,1)+CHR$(0))>0THENPRINTMID$(FE$(NF-1),4,16)
  59. 700 REM ** FIX DEL FILES
  60. 702 FORI=0TONF-1
  61. 704 IFASC(MID$(FE$(I),1,1)+CHR$(0))=0THENFE$(I)=ZF$
  62. 706 NEXT
  63. 800 REM ** MOVE SUBDIRS TO TOP
  64. 801 PRINT"[147]CHECKING FOR SUBDIRECTORIES...":PRINT
  65. 802 CL=0
  66. 804 FORI=1TONF-1
  67. 806 IFASC(MID$(FE$(I),1,1)+CHR$(0))<>134THEN818
  68. 808 TS$=FE$(I)
  69. 810 FORJ=ITOCL+1STEP-1
  70. 812 FE$(J)=FE$(J-1)
  71. 814 NEXT
  72. 816 FE$(CL)=TS$:CL=CL+1
  73. 818 NEXT
  74. 900 REM ** DISPLAY FINAL
  75. 902 FORI=0TONF-1
  76. 904 IFASC(MID$(FE$(I),1,1)+CHR$(0))>0THENPRINTMID$(FE$(I),4,16)
  77. 906 NEXT
  78. 1000 REM ** WRITE NEW DIR
  79. 1002 PRINT"[147]WRITE NEW DIRECTORY TO DISK? ";
  80. 1004 GETK$:IFK$=""THEN1004
  81. 1006 IFK$<>"Y"ANDK$<>"[217]"THEN1100
  82. 1007 PRINT"[147]WRITING NEW DIRECTORY..."
  83. 1008 T=BT:S=BS
  84. 1010 OPEN15,DV,15:OPEN2,DV,2,"#"
  85. 1012 FORI=0TOBC
  86. 1014 PRINT#15,"B-P";2;0
  87. 1016 PRINT#2,CHR$(T%(I));CHR$(S%(I));FE$(I*8);
  88. 1018 FORJ=1TO7
  89. 1020 PRINT#2,CHR$(0);CHR$(0);FE$(I*8+J);
  90. 1022 NEXT
  91. 1024 PRINT#15,"U2:";2;0;T;S
  92. 1026 T=T%(I):S=S%(I)
  93. 1028 NEXT
  94. 1030 CLOSE2
  95. 1031 PRINT"[147]VALIDATING..."
  96. 1032 PRINT#15,"V0:"
  97. 1034 CLOSE15
  98. 1100 REM ** DO ANOTHER
  99. 1102 PRINT"[147]SORT ANOTHER DIRECTORY?";
  100. 1104 GETK$:IFK$=""THEN1104
  101. 1106 IFK$<>"Y"ANDK$<>"[217]"THENEND
  102. 1108 RUN
  103.